﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeTop.复习九月份
{
    internal class AgeComparer : IComparer<int>
    {
        public int Compare(int x, int y)
        {
            long a = MyConcat(x, y);
            long b = MyConcat(y, x);
            return b.CompareTo(a);//理解为b-a

            //a>b,x排前面,所以要返回负数，所以b<a
            // 负数: 第一个对象小于第二个对象，排序时第一个对象排在前面。
            //零: 两个对象相等，顺序保持不变。
            //正数: 第一个对象大于第二个对象，排序时第二个对象排在前面。
        }

        private long MyConcat(long x, long y)
        {
            long copyy = y;

            if (copyy == 0)
            {
                return x * 10 + y;
            }

            while (copyy > 0)
            {
                copyy /= 10;
                x *= 10;
            }

            return x + y;//这个值会溢出
        }
    }

    public class Solution179
    {
        public string LargestNumber1(int[] nums)
        {
            IList<int> list = new List<int>();

            for (int i = 0; i < nums.Length; i++)
            {
                //把每个数字都拆分成个位数错误，不允许拆分

                int num = nums[i];
                while (num > 0)
                {
                    list.Add(num % 10);
                    num /= 10;
                }
            }
            int[] ints = list.ToArray();
            Array.Sort(ints);
            for (int i = 0; i < ints.Length; i++)
            {
            }
            return " ";
        }

        public string LargestNumber(int[] nums)
        {
            //先写一个比较器

            Array.Sort(nums, new AgeComparer());
            string res = "";

            if (nums[0] == 0)
            {
                res = "0";
                return res;
            }
            for (int i = 0; i < nums.Length; i++)
            {
                long num = nums[i];
                res += num.ToString();
            }
            return res;
        }
    }

    internal class Program179
    {
        private static void Main179(string[] args)
        {
            int[] nums = [10, 2];
            Solution179 solution = new Solution179();
            string res = solution.LargestNumber(nums);
            Console.WriteLine(res);
        }
    }
}